home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / matrixc.zip / 3DEX3.C < prev    next >
C/C++ Source or Header  |  1990-05-10  |  2KB  |  105 lines

  1. /* Example of use of 3D routines to rotate tetrahedron  on X,Y,Z axes */
  2. /* Make using 
  3.    make make3dex.mak */
  4. /* Written by Nigel Salt */
  5.  
  6. #include <3d.h>
  7. #include <graph.h>
  8.  
  9. double dmatA[4][4];
  10. matrix matA={4,4,&dmatA[0][0]};
  11.  
  12. double dmatB[4][4];
  13. matrix matB={4,4,&dmatB[0][0]};
  14.  
  15. double dmatC[4][4];
  16. matrix matC={4,4,&dmatC[0][0]};
  17.  
  18. double dmatD[4][4];
  19. matrix matD={4,4,&dmatD[0][0]};
  20.  
  21. double dmatE[4][4];
  22. matrix matE={4,4,&dmatE[0][0]};
  23.  
  24. double dmatF[4][4];
  25. matrix matF={4,4,&dmatF[0][0]};
  26.  
  27. double dmatG[4][4];
  28. matrix matG={4,4,&dmatG[0][0]};
  29.  
  30. double dmatH[4][4];
  31. matrix matH={4,4,&dmatH[0][0]};
  32.  
  33. double dmatI[4][4];
  34. matrix matI={4,4,&dmatI[0][0]};
  35.  
  36. double dmatJ[4][4];
  37. matrix matJ={4,4,&dmatJ[0][0]};
  38.  
  39. double tetrap[5][3]=
  40. {
  41.   0,1,0,
  42.   -1,0,1,
  43.   1,0,1,
  44.   -1,0,-1,
  45.   1,0,-1,
  46. };
  47. int tetral[8][2]=
  48. {
  49.   0,1,
  50.   0,2,
  51.   0,3,
  52.   0,4,
  53.   1,2,
  54.   1,3,
  55.   4,3,
  56.   4,2
  57. };
  58. object tetra=
  59. {
  60.   5,8,&tetrap[0][0],&tetral[0][0]
  61. };
  62.  
  63. double tetrap2[5][3];
  64. int tetral2[8][2];
  65. object tetra2=
  66. {
  67.   5,8,&tetrap2[0][0],&tetral2[0][0]
  68. };
  69.  
  70. main()
  71. {
  72.   int i,j,k;
  73.   char buff[80];
  74.   init3d();
  75.   scale3(&matA,50,50,50);
  76.   objtran(&tetra,&matA);
  77.  
  78.   for (j=0;j<3;j++)
  79.     {
  80.     rot3(&matA,pi/16,j);
  81.     _settextposition(30,0);
  82.     sprintf(buff,"%c ROT",'X'+j);
  83.     _outtext(buff);
  84.     for (i=0;i<50;i++)
  85.       {
  86.       _setcolor(i%15+1);
  87.       objdraw(&tetra);
  88.       objcop(&tetra,&tetra2);
  89.       objtran(&tetra,&matA);
  90.       for (k=0;k<32000;k++);
  91.       _setcolor(0);
  92.       objdraw(&tetra2);
  93.       }
  94.     }
  95.   _setvideomode(_DEFAULTMODE);
  96. }
  97.  
  98. wait()
  99. {
  100.  _settextposition(30,0);
  101.  _outtext("PRESS KEY");
  102.  getch();
  103.  _clearscreen(_GCLEARSCREEN);
  104. }
  105.